昨天我們成功地把 Discord BOT 加到伺服器了,今天來讓它上線吧!
今天會使用昨天拿到的 Token,讓 Discord BOT 上線,並加入簡單的回應設定 (使用範例程式)。
到目前為止,都還沒真的開始寫程式,都還只是使用 Discord 這個平台本身提供的功能與工具而已。今天,終於要來寫第一支程式了!
但是,在開始寫程式之前,第一步就是要先決定我們要用哪一個套件。沒想到,與 Discord API 相關套件的選擇有夠多 (有人在 Github 整理了一個清單),常見的語言都有,光 python 就有好幾個,挑選套件就花了我不少時間。經過一番研究之後,我最後選擇使用 discord.py 來開發 DC BOT。
當前最新版本是 v2.4.0
在挑選 python 套件時,我通常習慣看以下幾點:
前面有說到,python 的 Discord API 套件有好幾個,除了 discord.py 之外,還有:
discord.py 是 14.7k ★
總和下來,我覺得 discord.py 這個元老級的套件最適合。當然,並不是說其他套件不好,只是單就 Discord BOT 這件事來說,discord.py 是我目前認為最好的選擇。
另外,在查看各個套件的文件時,我發現有幾個套件之間的相似度非常的高。
一開始,我還很納悶,因為能這麼相似應該就是 fork 出來的,但會需要 fork 出來的原因,通常就是原本的套件不維護了,或是有某個重大 issue 沒時間 (或沒辦法) 解決。但是偏偏這幾個套件近期都還有再更新,issue 那邊也沒有看到什麼特別的討論。因此,後來有再更仔細地查資料,結果發現,原來 discord.py 這個套件背後有一段有趣(?)故事。
整個故事的開頭是 discord.py 的作者 Rapptz 在 2021-08-28 在 Gist 發布了一個公告 (Gist 連結),宣布不繼續維護了 discord.py 了。原因有點複雜,簡單來說就是覺得 Discord 官方在搞事 (發展方向與社群理念不合、沒有達成承諾等),讓自己無心繼續維護下去。雖然不打算讓別人接手這個 repository,但很歡迎大家 fork 出來繼續維護。
這篇 Gist 很長但內容也很精彩,說了很多當時 Discord 官方與社群的來回互動
不過,後來在 2022-03-06,作者又強勢回歸了 (Gist 連結)。會回來繼續開發的主要原因是,Discord 官方要 decommission Discord API v6 和 v7 (2022-02-15 官網和 Github 都有公告)。
有兩點值得注意一下:
不過,2022-05-12 公告說會改成延後到 2023 年初才 decommission
所以,為了守護世界和平讓使用 discord.py 開發的 Discord BOT 還可以繼續使用,Rapptz 最終決定恢復開發,然後就一路繼續維護到現在了。
前面扯太多八卦,該回到正題了
首先,在 terminal 下安裝指令
pip install -U discord.py
-U
等同於--upgrade
,確保如果已經有安裝過,也會更新到最新版本
安裝完成後,用 pip list
確認一下有裝好了,其中 discord.py
的版本是 2.4.0
其他的是相依套件
另外,預設安裝的 discord.py
是沒有語音模組的,如果需要的話,要把安裝指令改成
pip install -U discord.py[voice]
不過,本系列文章目前沒有打算介紹語音模組相關的功能,這部分就留給大家自行研究了~
接下來,執行官網上的範例
記得要改成自己的 Token
吐槽一下,不知道為什麼官網範例與 Github 上的範例不同...
# day03.py
import discord
intents = discord.Intents.default()
intents.message_content = True
client = discord.Client(intents=intents)
@client.event
async def on_ready():
print(f'We have logged in as {client.user}')
@client.event
async def on_message(message):
if message.author == client.user:
return
if message.content.startswith('$hello'):
await message.channel.send('Hello!')
client.run('your token here')
執行後,就可以在終端看到以下畫面
此時,再切到 Discord 伺服器查看成員名單,可以發現 Discord BOT 上線了!
接著,在輸入框輸入 $hello
,Discord BOT 就會回覆訊息
如果停止執行程式 (在 terminal 按下 ctrl + C),則可以看到 Discord BOT 又回到原本的離線狀態。
今天我們使用 discord.py 成功地讓 Discord BOT 上線了,並且可以跟 Discord BOT 做簡單的互動。